/**
 * 报警系统相关API
 * 封装报警列表、设置、历史记录等功能的接口
 */

import request from './request.js';

// API路径配置
const API_ROUTES = {
  ALARM: {
    // 报警基础操作
    LIST: '/api/alarms/list',               // 获取报警列表
    DETAIL: '/api/alarms/detail',           // 获取报警详情
    HANDLE: '/api/alarms/handle',           // 处理报警
    
    // 报警设置
    SETTINGS: '/api/alarms/settings',       // 获取报警设置
    UPDATE_SETTINGS: '/api/alarms/settings/update', // 更新报警设置
    CONTACTS: '/api/alarms/contacts',       // 获取报警联系人
    UPDATE_CONTACTS: '/api/alarms/contacts/update', // 更新报警联系人
    
    // 报警规则
    RULES: '/api/alarms/rules',             // 获取报警规则
    ADD_RULE: '/api/alarms/rule/add',       // 添加报警规则
    UPDATE_RULE: '/api/alarms/rule/update', // 更新报警规则
    DELETE_RULE: '/api/alarms/rule/delete', // 删除报警规则
    
    // 报警历史
    HISTORY: '/api/alarms/history',         // 获取报警历史
    STATS: '/api/alarms/stats',             // 获取报警统计
    
    // 能耗报警
    ENERGY_ALARMS: '/api/alarms/energy',    // 获取能耗报警
    ENERGY_SETTINGS: '/api/alarms/energy/settings', // 获取能耗报警设置
    UPDATE_ENERGY_SETTINGS: '/api/alarms/energy/settings/update', // 更新能耗报警设置
  }
};

/**
 * 报警API封装
 */
export default {
  /**
   * 获取报警列表
   * @param {Object} params - 查询参数 {unitId, type, level, status, page, limit}
   * @returns {Promise} 报警列表数据
   */
  getAlarmList(params = {}) {
    return request({
      url: API_ROUTES.ALARM.LIST,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取报警详情
   * @param {String} alarmId - 报警ID
   * @returns {Promise} 报警详情数据
   */
  getAlarmDetail(alarmId) {
    return request({
      url: API_ROUTES.ALARM.DETAIL,
      method: 'GET',
      data: { alarmId }
    });
  },
  
  /**
   * 处理报警
   * @param {String} alarmId - 报警ID
   * @param {Object} handleData - 处理数据
   * @returns {Promise} 处理结果
   */
  handleAlarm(alarmId, handleData) {
    return request({
      url: API_ROUTES.ALARM.HANDLE,
      method: 'POST',
      data: {
        alarmId,
        ...handleData
      }
    });
  },
  
  /**
   * 获取报警设置
   * @param {Object} params - 查询参数 {unitId}
   * @returns {Promise} 报警设置数据
   */
  getAlarmSettings(params = {}) {
    return request({
      url: API_ROUTES.ALARM.SETTINGS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 更新报警设置
   * @param {Object} settingsData - 设置数据
   * @returns {Promise} 更新结果
   */
  updateAlarmSettings(settingsData) {
    return request({
      url: API_ROUTES.ALARM.UPDATE_SETTINGS,
      method: 'PUT',
      data: settingsData
    });
  },
  
  /**
   * 获取报警联系人
   * @param {Object} params - 查询参数 {unitId}
   * @returns {Promise} 联系人数据
   */
  getAlarmContacts(params = {}) {
    return request({
      url: API_ROUTES.ALARM.CONTACTS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 更新报警联系人
   * @param {Object} contactsData - 联系人数据
   * @returns {Promise} 更新结果
   */
  updateAlarmContacts(contactsData) {
    return request({
      url: API_ROUTES.ALARM.UPDATE_CONTACTS,
      method: 'PUT',
      data: contactsData
    });
  },
  
  /**
   * 获取报警规则
   * @param {Object} params - 查询参数 {unitId, deviceId, categoryId}
   * @returns {Promise} 规则数据
   */
  getAlarmRules(params = {}) {
    return request({
      url: API_ROUTES.ALARM.RULES,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 添加报警规则
   * @param {Object} ruleData - 规则数据
   * @returns {Promise} 添加结果
   */
  addAlarmRule(ruleData) {
    return request({
      url: API_ROUTES.ALARM.ADD_RULE,
      method: 'POST',
      data: ruleData
    });
  },
  
  /**
   * 更新报警规则
   * @param {Object} ruleData - 规则数据，包含ruleId
   * @returns {Promise} 更新结果
   */
  updateAlarmRule(ruleData) {
    return request({
      url: API_ROUTES.ALARM.UPDATE_RULE,
      method: 'PUT',
      data: ruleData
    });
  },
  
  /**
   * 删除报警规则
   * @param {String} ruleId - 规则ID
   * @returns {Promise} 删除结果
   */
  deleteAlarmRule(ruleId) {
    return request({
      url: API_ROUTES.ALARM.DELETE_RULE,
      method: 'DELETE',
      data: { ruleId }
    });
  },
  
  /**
   * 获取报警历史
   * @param {Object} params - 查询参数 {unitId, deviceId, type, level, timeRange, page, limit}
   * @returns {Promise} 历史数据
   */
  getAlarmHistory(params = {}) {
    return request({
      url: API_ROUTES.ALARM.HISTORY,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取报警统计
   * @param {Object} params - 查询参数 {unitId, timeRange, type}
   * @returns {Promise} 统计数据
   */
  getAlarmStats(params = {}) {
    return request({
      url: API_ROUTES.ALARM.STATS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取能耗报警
   * @param {Object} params - 查询参数 {unitId, deviceId, timeRange, page, limit}
   * @returns {Promise} 能耗报警数据
   */
  getEnergyAlarms(params = {}) {
    return request({
      url: API_ROUTES.ALARM.ENERGY_ALARMS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 获取能耗报警设置
   * @param {Object} params - 查询参数 {unitId, deviceId, categoryId}
   * @returns {Promise} 能耗报警设置
   */
  getEnergyAlarmSettings(params = {}) {
    return request({
      url: API_ROUTES.ALARM.ENERGY_SETTINGS,
      method: 'GET',
      data: params
    });
  },
  
  /**
   * 更新能耗报警设置
   * @param {Object} settingsData - 设置数据
   * @returns {Promise} 更新结果
   */
  updateEnergyAlarmSettings(settingsData) {
    return request({
      url: API_ROUTES.ALARM.UPDATE_ENERGY_SETTINGS,
      method: 'PUT',
      data: settingsData
    });
  }
}; 